#ifndef EFF_MANAGER_H
#define EFF_MANAGER_H

#include "loc_types.h"
#include <avr/pgmspace.h>
#include "LSC_effect.h"

/********************/
/* Interface Section*/
/********************/

/************************/
/* Exported Definitions */
/************************/

/**	Length of the effects buffer.
*/
#define EFF_nEFFECTS_BUFFER_LENGTH		15  /*MAIN_nSCREEN*/

/** Effects Buffer
*/
extern u8 EFF_au8EffectsBuffer[EFF_nEFFECTS_BUFFER_LENGTH];
/**********************/
/* External Functions */
/**********************/
/** Initialization function of the module.
*/
extern void EFF_vidInit(void);

/** Background function of the module.
*/
extern void EFF_vidMainFunction(void);

/** This function sets the current effect to be applied to the messages.
*/
extern void EFF_SetEffect(u8 u8EffectName);

/*************************/
/* Configuration Section */
/*************************/


/** A definition of the number of available effects that could be applied.
*/
#define EFF_nNUMBER_OF_EFFECTS               1

/** Type of the functions to be called to apply effects.
*/
typedef void (*tpfEffect)(void) ;

#ifdef EFF_MANAGER

/** Array of pointer to function to point to the functions of effects to be applied.
*/
const tpfEffect apfEffectFunctions[EFF_nNUMBER_OF_EFFECTS] PROGMEM = {LSC_vidLeftScrollEffect};

/** Array of pointer to function to point to the initialization functions effects.
*/
const tpfEffect apfEffectInit[EFF_nNUMBER_OF_EFFECTS] PROGMEM = {LSC_vidInit};


#else
/** Array of pointer to function to point to the functions of effects to be applied.
*/
extern const tpfEffect apfEffectFunctions[EFF_nNUMBER_OF_EFFECTS] PROGMEM;


/** Array of pointer to function to point to the initialization functions effects.
*/
extern const tpfEffect apfEffectInit[EFF_nNUMBER_OF_EFFECTS] PROGMEM;
#endif



   

#endif /*EFF_MANAGER_H*/

